User centric product files distribution

ABSTRACT

A user centric approach to program  product distribution, such as a program product, including a complementary multi-vendor code control system (MVCCS) suitable for use to practice the user centric distribution approach is disclosed. Under the user centric approach, versioning control information of the source/object  files of various program  products to be installed on various user computer systems are maintained on a user computer system by user computer system basis. Each user computer system or its proxy is provided with a portion or an entire MVCCS to facilitate receipt and storage into a common repository for the user computer system versioning control information of different source/object  files of different software  vendors, and to facilitate retrieval of selective versions of the different source/object  files for the user computer system using versioning control information stored in the common repository for the user computer system. In one embodiment, the MVCCS is further equipped to facilitate receipt and storage into a common library, the different source/object files identified by corresponding universally unique identifiers (UUID), and the versioning control information includes predecessor UUID information. In one embodiment, both the common repository and the common library, as well as the entire MVCCS are disposed on the user computer system.

RELATED APPLICATION

This is a continuation-in-part application of U.S. patent applicationSer. No. 09/177,443, filed on Oct. 21, 1998, U.S. Pat. No. 6,195,796entitled “User Centric Source Control”.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to the field of computer systems. Morespecifically, the present invention relates to methods and apparatusesassociated with the distribution of program products for computersystems.

2. Background Information

Program products are typically distributed in a vendor centric manner asillustrated in FIG. 1. Code control system is employed to provideversioning control to source files associated with program products onthe vendors' system or systems. Only the “release” version of a programproduct source file is converted into object or executable form fordistribution to the users, and the conversion process is performed onthe vendors' systems. Examples of these vendor centric code controlsystems include those disclosed in U.S. Pat. Nos. 4,558,413, 4,912,637,5,357,631 and 5,495,610.

Under this conventional vendor centric approach to source control anddistribution, each program product group or software vendor goes aboutits development, conversion and distribution with little regard to otherprogram product groups or software vendors, except perhaps performingcertain amount of system level testing with a small group of selectedprogram products. As a result, it is not unusual for a user, uponinstalling a number of program products, to find that the programproducts are incompatible and may not operate together, or upon applyinga fix to one program product, other previously functioning programproducts or the entire system would fail. Once finding himself/herselfin such a predicament, there are few choices available to the user, andfurthermore, there are limited tools available for the user to deal withthe problems. Often times, the remedial action requires distribution ofan entire replacement version, as opposed to merely the “broken” or“offending” parts.

Additionally, the prior art vendor centric approach to source control isalso restrictive in fostering program product interoperability. Forexample, a vendor of a program product requiring minor extension supportfrom another program product of a different vendor would neverthelessrequire support and close cooperation from the other vendor. As afurther example, users of the same program product are often frustratedin their cooperation by virtue of the fact that they operate withdifferent version levels of the vendor's program product.

These problems or disadvantages are especially undesirable in view ofthe opportunities to offer the ever increasing population of potentialusers (which are typically novice), an ever increasing array offunctionally rich consumer program products for installation and use ontheir ever more powerful personal computer systems. Thus, an improvedapproach to software distribution, including a complementary codecontrol system, is desired.

SUMMARY OF THE INVENTION

A user centric approach to program product distribution, including acomplementary multi-vendor code control system (MVCCS) suitable for useon a user computer system or its proxy to practice the user centricdistribution approach is disclosed. Under the user centric approach,versioning control information of various program products to beinstalled on various user computer systems are maintained on a usercomputer system by user computer system basis. Each user computer systemand/or its proxy is provided with a portion or the entire MVCCS tofacilitate receipt and storage into a common repository for the usercomputer system versioning control information of differentsource/object files of different software vendors, and to facilitateretrieval of selective versions of the different source/object files forthe user computer system using versioning control information stored inthe common repository for the user computer system.

In one embodiment, the MVCCS is further equipped to facilitate receiptand storage into a common library, the different source/object files. Inone embodiment, the different source/object files are identified bycorresponding universally unique identifiers (UUID), and the versioningcontrol information includes predecessor UUID information. In oneembodiment, the common repository is disposed on the user computersystem. In one embodiment, the common library is also disposed on theuser computer system.

BRIEF DESCRIPTION OF DRAWINGS

The present invention will be described by way of exemplary embodiments,but not limitations, illustrated in the accompanying drawings in whichlike references denote similar elements, and in which:

FIG. 1 illustrates the prior art vendor centric approach to programproduct distribution and source control;

FIG. 2 illustrates an overview of the user centric approach of thepresent invention in accordance with one embodiment;

FIG. 3 illustrates one embodiment of a vendor development/code controlenvironment suitable for practicing the present invention;

FIG. 4 illustrates one embodiment of a data structure suitable for useto maintain the predecessor UUID and related information of FIG. 3;

FIGS. 5-6 illustrate one embodiment each of various operational flowsfor the vendor development/code control environment of FIG. 3;

FIG. 7 illustrates one embodiment of the MVCCS of FIG. 2;

FIG. 8 illustrates one embodiment of the operational flow of thecheck-in module of FIG. 7;

FIGS. 9-11 illustrate one embodiment of a time based approach tofacilitate a user in controlling program product regeneration for theuser's system, including a scheduler, its user interface and operationalflow; and

FIG. 12 illustrates one embodiment of an exemplary computer systemsuitable for use to practice the present invention.

DETAILED DESCRIPTION OF THE INVENTION

In the following description, various aspects of the present inventionwill be described. However, it will be apparent to those skilled in theart that the present invention may be practiced with only some or allaspects of the present invention. For purposes of explanation, specificnumbers, materials and configurations are set forth in order to providea thorough understanding of the present invention. However, it will alsobe apparent to one skilled in the art that the present invention may bepracticed without the specific details. In other instances, well knownfeatures are omitted or simplified in order not to obscure the presentinvention.

Parts of the description will be presented in terms of operationsperformed by a computer system, using terms such as tables, files, dataand the like, consistent with the manner commonly employed by thoseskilled in the art to convey the substance of their work to othersskilled in the art. As well understood by those skilled in the art,these quantities take the form of electrical, magnetic, or opticalsignals capable of being stored, transferred, combined, and otherwisemanipulated through mechanical and electrical components of a digitalsystem; and the term digital system include general purpose as well asspecial purpose data processing machines, systems, and the like, thatare standalone, adjunct or embedded.

Various operations will be described as multiple discrete stepsperformed in turn in a manner that is most helpful in understanding thepresent invention, however, the order of description should not beconstrued as to imply that these operations are necessarily orderdependent, in particular, the order the steps are presented.

Referring now to FIG. 2, wherein an overview of the present invention inaccordance with one embodiment is shown. As illustrated, in accordancewith the teachings of the present invention, unlike the prior art, anuser centric approach is employed for program product distribution. Morespecifically, each user system 202 is associated with a multi-vendorcode control system (MVCCS) 200 that provides versioning control forsource and object files of program products of vendors 204a-204f to beinstalled or installed on user system 202. MVCCS 200 includes, inparticular, versioning control information, on a user system by usersystem basis, for the source and object files of the program products ofvendors 204a-204f. For the illustrated embodiment, user system 202 isprovided with its own MVCCS 200, which maintains the versioning controlinformation for user system 202 only. Other alternate embodiments arealso possible, so long as the user system by user system correspondenceprinciple is maintained for versioning control information, to bedescribed more fully below. Before doing so, it should be noted that thenumber of vendors shown in FIG. 2 are straightly illustrative. Thepresent invention may be practiced with program products of more or lessvendors. Furthermore, the term “program products” is intended torepresent a broad category of software systems, subsystems as well asapplication product, and the term “source files” is intended to includesource files written in a broad category of programming languages,including but not limited to C, C++, the HTML programming language, theXML programming language, Java™ and the JAVA and JavaScript JAVASCRIPTprogramming languages, as well as natural languages, such as English,Spanish and so forth (i.e. text files).

Referring now to FIG. 3, wherein one embodiment of a vendordevelopment/code control environment suitable for use to practice thepresent invention is shown. As illustrated, vendor development/codecontrol environment 300 provides versioning control for the source andobject files of one or more program products of the particular vendor ona delta basis. That is, each version of a source file is formed bycombining the root or base source file with a number of subsequentchanges or deltas. Each version of an object file is generated from acorresponding combination of base and delta source files. For theillustrated embodiment, development/code control environment 300includes library 302, repository 304, check-in and check out functions306-308, editor and compiler/linker 310-312, delta generator 314 anddistributor 316. The elements are operatively coupled to each other asshown.

Library 302 is used to store source files 318 of a program product ineither a base or a delta form (depending on whether the source file isthe root or a subsequent change), as well as object files 319 of theprogram product. Each base/delta source file 318 is advantageouslyidentified by an universally unique identifier (UUID), that uniquelyidentifies the base/delta source file not only among the base/deltasource files of the program product, but among the source files of allprogram products of all vendors. The UUID also uniquely identifies thecorresponding object file generated from source files inclusive of theparticular delta source file. Repository 304 is used to store versioningcontrol information 320 of source and object files 318 and 319.Versioning control information 320 includes in particular predecessorUUID information for each UUID. For the illustrated embodiment,versioning control information 320 also includes cross program productdependency information for the UUIDs, locking information to prevent acorresponding base/delta source file from being further updated, andsecurity/privilege information to prevent unauthorized updates. Inalternate embodiments, other control information may also be included inaddition to or in lieu of (in part or in whole) the above enumeratedcontrol information.

Check-in and check-out functions 306-308 perform their conventionalfunctions of checking in the base/delta source files or selectivelychecking out different versions of the source and object files, exceptthat check-in and check-out functions 306-308 operate with source andobject files that are advantageously identified by the above describedUUIDs. Editor 310 performs its conventional function of editing thechecked out source files, and compiler/linker 312 performs itsconventional function of compiling/linking the checked out/editedcompilable source files. Similarly, delta generator 314 performs theconventional function of creating delta source files based on thecheck-out and modified versions of a source file. Last but not least,distributor 316 performs the conventional function of distributingprogram products to users, except distributor 316 operates to distributeversioning control information 320, and in some embodiments, base/deltasource files 318 and/or object files 319 to MVSCS of the user systems,in accordance with the teachings of the present invention. For thepurpose of this application, the term distribution includes packaging ofthe program products onto distribution medium, such as tapes, diskettes,CDROM, and so forth, for distribution, as well as transferring of theprogram products to the user systems or their proxies (such as acorporate or publisher server) through a wireless or wired medium, suchas a public data network (e.g. the Internet).

FIG. 4 illustrates an exemplary data structure suitable for use to storethe versioning control information in repository 304 to practice thepresent invention. As illustrated, table 400 includes a number ofversion control entries 402, one for each UUID. Each version controlentry 402 includes the corresponding UUID 404, its predecessor UUID 406,and any dependency for the UUID 408. The dependency information may beintra product dependencies as well as dependencies on other programproducts. In other embodiments, each version control entry 402 may alsoinclude other control information, such as the above described lockingand security/privilege control information. In other embodiments, one ormore other organized data structures, such as metafiles, individually orin combination, may be employed to store versioning control information320 instead.

FIGS. 5-6 illustrate one embodiment each of various operational flows ofvendor development/code control environment of FIG. 3. Morespecifically, FIG. 5 illustrates an exemplary embodiment of theoperational flow of check-in function 306, whereas FIG. 6 illustrates anexemplary embodiment of the operational flow of distributor 316. Otheroperational flows not described are known in the art. As illustrated, inresponse to the receipt of a base/delta source file, step 502, check-infunction 306 generates and assigns an UUID to identify the base/deltasource file, step 504. As described earlier, the UUID uniquelyidentifies the base/delta source file not only among other source filesof the program product, but all other source files of all other programproducts, regardless whether they are of the same vendor or not. Asalluded to earlier, the object file generated from source filesinclusive of the delta source file is also identified by the same UUID.In one embodiment, check-in function 306 employs an approach similar tothe approach commonly employed in the art of networking for identifyingpackets, that is, generating the UUID as a function of date, time andthe network address of the computer system executing check-in function306. In one embodiment, check-in function 306 supports the checking inof a delta file as either an update or a patch to the source file. Inthe “update” case, a new “version” of the source file is considered tohave been formed if the delta file is included, whereas in the “patch”case, the “version” state of the source file is considered to beunchanged, even if the delta file is included.

Upon generating and assigning the UUID to the base/delta source file,check-in function 306 generates the genealogy for the UUID, i.e. itspredecessor ID, and if applicable, dependency and other controlinformation, step 506. The predecessor UUID is determined based on theUUID of the check-out version of the source file, from which the deltasource file is generated. For a base source file with no check-outversion of the source file, check-in function 306 generates a “null”predecessor UUID. The dependency and other control information aredetermined based on information stored in associated control filesgenerated by compiler/linker 312. Next, check-in function 306 stores thebase/delta source file in library 302, and the predecessor UUID,dependency and other control information (if any) in repository 304,step 508.

At step 602, distributor 316 retrieves the versioning controlinformation of a program product, and distributes them for storage for auser system. As will be described in more details below, the versioningcontrol information are distributed for storage in a common repositoryof the user system employed to store versioning control information formultiple program products of multiple vendors installed on the usersystem. In one embodiment, the common repository is operated by a MVCCSserving only the user system. In one embodiment, the common repositoryis operated by a MVCCS that operates and maintains multiple commonrepositories for multiple user systems, on a user system by user systembasis.

For the illustrated embodiment, distributor 316 also retrieves anddistributes other associated control information, step 604. In oneembodiment, distributor 316 retrieves and distributes intra as well ascross program product dependency control information. In one embodiment,distributor 316 also distributes locking information that locks downcertain base/delta source files to prevent them from furtherupdate/modification. In one embodiment, distributor 316 also distributessecurity/privilege information to prevent unauthorizedupdate/modification to the corresponding base/delta source file.

For the illustrated embodiment, distributor 316 also retrieves thebase/delta source files 318 from library 302, and distributes them forstorage for the user system, step 606. As will be described in moredetail below, in one embodiment, the base/delta source files are alsodistributed on a user system by user system basis. In other embodiments,the base/delta source files are distributed to server systems (alsoreferred to as proxies of the user systems), each serving a group ofuser systems, such as a corporate server or a publisher server. Inalternate embodiments, object files 319 may also be retrieved anddistributed.

While for ease of understanding, the various types of versioning controlinformation distributed by distributor 316 were incrementally describedas separate discrete steps, it should be noted that their distributionmay be combined in any one of a number of application dependent manners.For example, all the “secondary” versioning control information, i.e.dependency, locking etc., may be combined and distributed together.

Referring now to FIG. 7 wherein one embodiment of the MVCCS of FIG. 2 isshown. As illustrated, MVCCS 700 includes common library 702, commonrepository 704, check-in and check out functions 706-708, andcompiler/linker 710. The elements are operatively coupled to each otheras shown. Similar to the library and the repository earlier describedfor a vendor's development/code control environment, common library 702and repository 704 are employed to store base/delta source files 718,object files 719 and corresponding versioning control information 720 ofprogram products, except in accordance with the present invention, theyare employed to store base/delta source files 718, object files 719 andcorresponding versioning control information 720 of program products ofmultiple vendors. This is advantageously made possible by the programproduct vendors employment of UUIDs to identify the source and objectfiles of their program products.

Check-in function 706 performs its conventional function of checkingbase/delta source files 718 and versioning control information 720 intocommon library 702 and repository 704 as they are received from thevendor. For the purpose of this application, the term “receive” include“receiving” applicable ones of the base/delta source files 718, objectfiles 719 and versioning control information 720 from a distributionmedium as well as from a server of a vendor. Check-out function 708performs its conventional function of selectively retrieving differentversions of source files 718 from common library 702, using versioningcontrol information 720 stored in common repository 704, whereascompiler/linker 710 performs its conventional function of compiling/linkediting the retrieved compilable source files into object code orexecutables. [Note that if object files are also distributed, theprocessing of source files is typically optional.]

In one embodiment, all illustrated elements, i.e. common library 702,common repository 704, check-in and check-out functions 706-708 andcompiler/linker 710 are all disposed on the user system where theprogram products are installed or being installed. In an alternateembodiment, all illustrated elements, except common library 702 aredisposed on the user system. Library 702 is either disposed on a“corporate/publisher” server serving multiple user systems, or on thevendor's server, and check-out function 708 retrieves source files 718or object files 719 from the “corporate/publisher” or vendor serverthrough a private/public network on an as needed basis, using versioningcontrol information 720 stored in common repository 704. Accordingly,check-in function 706 receives only versioning control information 720from the vendor, and as described earlier, stores them in commonrepository 704. Generation of the object code/executables, ifapplicable, are still performed on the user system where the programproducts are installed or being installed.

In yet another embodiment, only check-out function 708 andcompiler/linker 710 are disposed on the user system where the programproducts are installed. Common repository 720 and check-in function 706are disposed on a “corporate/publisher” server serving multiple usersystems. In other words, the “corporate/publisher” server maintainsmultiple common repositories, one for each user system, on a one-to-onecorrespondence basis. Upon receipt of versioning control information 720of a program product, check-in function 706 stores them into thecorresponding common repositories of the user systems where the programproduct is installed or to be installed. As in the immediately abovedescribed embodiment, library 702 is either disposed on the same/another“corporate/publisher” server serving multiple user systems or on thevendor's server. Check-out function 708 retrieves source files 718 orobject files 719 from the “corporate/publisher” or vendor server througha private/public network on an as needed basis, using versioning controlinformation 720 stored in the corresponding common repository 704disposed on the “corporate/publisher” server. Generation of the objectcode/executables, if applicable, are still performed on the user systemwhere the program products are installed.

In yet another embodiment, none of the illustrated elements are disposedon the user system where the program products are installed. Commonrepository 720, check-in and check-out functions 706-708, andcompiler/linker 710 are disposed on a “corporate/publisher” serverserving multiple user systems. As in the immediately above describedembodiment, the “corporate/publisher” server maintains multiple commonrepositories 720, one for each user system, on a one-to-onecorrespondence basis. Upon receipt of versioning control information 720of a program product, check-in function 706 stores them into thecorresponding common repositories 720 of the user systems where theprogram product is installed or to be installed. Also similar to theimmediately above described embodiment, library 702 is either disposedon the same/another “corporate/publisher” server serving multiple usersystems or on the vendor's server. Check-out function 708 retrievessource files 718 or object files 719 from the “corporate/publisher” orvendor server through a private/public on an as needed basis, usingversioning control information 720 stored in the corresponding commonrepository 704 disposed on the “corporate” server. For this embodiment,generation of the object code/executables, if applicable, are performedon the “corporate/publisher” server, and then “downloaded” to the usersystems.

To summarize, in each of these embodiments, a common repository 704 ismaintained for each user system to store versioning control information720 of the program products installed or to be installed on the usersystem. The common repository 704 may be disposed on the user system, oron a “corporate/publisher” server, provided the one-to-onecorrespondence is maintained. Common library 702 may be complementarilydisposed on the user system, the same/another “corporate/publisher”server or the vendor's server, depending on where common repository 704is disposed. Likewise, check-in and check-out functions 706-708 andcompiler/linker 710 are also complementarily disposed, depending onwhether common library 702 and common repository 704 are disposed. Notethat while in accordance to the teachings of the present invention,one-to-one correspondence to the user system is always maintained forcommon repository 704, such one-to-one correspondence to the user systemis merely preferred but not mandated for common library 702.

FIG. 8 illustrates one embodiment of the operational flow of thecheck-in function of FIG. 7 for receiving and storing versioning controlinformation. As shown, at step 802, check-in function 706 awaitsversioning control information of the program products of the vendors.At step 804, in response to the receipt of the versioning controlinformation for one or more base/delta source files or object files of aprogram product from a vendor, check-in function 706 stores the receivedversioning control into the common repository 704 for the user system.Check-in function 706 stores the received information to the same commonrepository 704 without regard to the vendor. Recall as describedearlier, common repository 704 may or may not be disposed on the usersystem. Check-in function 706 repeats steps 802-804 as many times as itis necessary until versioning control information are stored into commonrepository 704 for the user system for all source/object files of allprogram products, regardless of vendors, to be installed or installed onthe user system.

In an embodiment, where check-in function 706 also receives sourceand/or object files of the program products, check-in function 706handles the receipt and storing of the source and/or object files inlike manner as described above for the versioning control information ofthese source and object files.

The novel user centric approach to program product distribution providesnumerous advantages over the prior art vendor centric approach to a userof an user system endowed with the present invention. As an example,FIGS. 9-11 illustrate a time based approach to controlling regenerationof program products installed on the user's system offerable to the useras a result of the present invention. Illustrated in FIG. 9 is scheduler900 that can selectively invoke the above described check-out functionand compiler/linker of the MVCCS of the present invention to regeneratethe program products installed on the user system relative to a timereference, in response to a user's input for the time reference. FIG. 10illustrates an exemplary user interface of scheduler 900, and FIG. 11illustrates one embodiment of the operational flow of scheduler 900.

As illustrated in FIG. 10, exemplary user interface 1000 from which theuser may select a date, based on which the installed program products ofthe user system will be regenerated, includes various pop up panels 1002related to managing program products installation/uninstallation andregeneration for the user system relative to a time reference. Pop uppanels 1002 includes in particular regeneration panel 1003 havingcalendar 1004. Calendar 1004 includes month pop up 1006 and year pop up1008 to facilitate the user in denoting a date, against which theprogram product regeneration is to be performed. Additionally,regeneration panel 1003 includes “generate” button 1010 to cause theregeneration process to be started. In alternate embodiments, finergranularity may be employed to specified the time reference againstwhich the regeneration is to be performed. Other control buttons as wellas selection features may also be included.

As illustrated in FIG. 11, at step 1102, in response to a user input,e.g. a user's selection of a program product management icon, the abovedescribed exemplary user interface is presented to the user. At step1104, scheduler 900 awaits for the user's inputs. Upon receipt of auser's input, scheduler 900 determines if the user has selected the“generate” button, step 1106. If the determination is negative, implyingthat the user has selected other selection features, scheduler 900handles the user selection accordingly, in an application dependentmanner, step 1108. For example, in response to the selection of the downarrow button associated with the month pop up, the month list isdisplayed. However, if it is determined that the user has selected the“generate” button, scheduler 900 selectively invokes the above describedcheck-out function and if applicable, the compiler/linker of the MVCCSof the present invention to cause the “latest” version of the programproducts, defined in accordance with the reference date selected by theuser, to be regenerated, using the versioning control information storedin the common repository maintained for the user system, step 1112. Theregeneration is either through direct retrieval of the applicable objectfiles (i.e. without step 1110) or indirectly, through retrieval of theapplicable source files, step 1110, and recompiling the source files tore-generate the needed object files, step 1112. Step 1112 and optionally1110 are repeated as many times as it is necessary until objectcode/executables for all program products previously installed on theuser system have been regenerated.

Those skilled in the art will appreciate that the above described timebased approach to facilitate a user in controlling program productregeneration for his/her system is especially helpful to the user indealing with system regression caused by the installation of one or morenew program products. Through the above described exemplary userinterface, the user can easily select an earlier date where the userknows his/her system was operating without the recently encounteredproblems, and with the click of a control button, the user's system isautomatically restored back to a prior known properly operating state,without requiring the user to resolve various intra and/or inter programproduct dependency problems. Similarly, from one known good operatingstate, the user can also easily select a later date, and with the clickof a control button, the user's system is automatically forwarded to anew state to determine whether the system can operate reliably for theuser, again without requiring the user to resolve various intra and/orinter program product dependency problems. In general, the user maycause as many “undos” and/or “redos” to be performed in any order and asoften as it is desired. Note that the “undos” and/or “redos” may beperformed for other non-reliability related reasons, such ascompatibility,

Furthermore, in lieu of or in addition to the above described time basedapproach to controlling program product regeneration, the presentinvention may also be practiced in conjunction with an usagecharacteristic based approach to software customization, as disclosed incopending U.S. patent application Ser. No. 09/176,692, filed Oct. 21,1998, and entitled “Usage Characteristic Based Software Customization”,which is hereby fully incorporated by reference (except for thereciprocating incorporation). For those embodiments where source filesare also provided to the user systems or their proxies, the presentinvention may also be practiced with some or all of the vendorsemploying security mechanisms to protect their source files. Thesecurity mechanisms may be any one of these techniques known in the art,such as a private/public key approach.

While the present invention has thus far been substantially described inthe context of empowering user systems with the ability to managingsource files from multiple program product vendors, those skilled in theart will appreciate that the benefits of the present invention are notrestricted to only this dimension of relationship between a user systemand its vendor. Under the present invention, a vendor of a programproduct may easily provide to its user systems simple extensions itneeds in another program product of a different vendor without requiringclose cooperation or support from the other vendor. Similarly, users ofa program product of a more recent version level may temporarily enableother peer users of the program product of an earlier version level tofacilitate data or file sharing between the users. Thus, it isanticipated that the present invention will also benefit inter-vendor aswell as inter-user cooperation, leading to an overall improvedinteroperability experience for the users.

Lastly, we refer now to FIG. 12, wherein one embodiment of an exemplarycomputer system suitable for use to practice the present invention, inparticular as a user system, is illustrated. As shown, exemplarycomputer system 1200 includes processor 1202 and system memory 1204coupled to each other via system bus 1206. Coupled also system bus 1206are non-volatile storage 1208, various user input/output and otherinformation devices 1210 and communication interface 1220. Each of theseelements perform its conventional functions known in the art. Inparticular, system memory 1204 and non-volatile storage 1208 areemployed to store a working copy and a permanent copy of the programminginstructions implementing the teachings of the present invention. Thepermanent copy of the programming instructions may be loaded intonon-volatile storage 1208 in the factory, or in the field, throughdistribution medium 1222 or through communication interface 1220. Asdescribed earlier, any one of a number of recordable medium such astapes and so forth may be employed. The constitution of these elements1202-1220 are also well known, and accordingly will not be furtherdescribed.

Thus, a novel user centric approach to program product distribution,including a complementary multi-vendor code control system, has beendescribed. While the present invention has been described in terms ofthe above illustrated embodiments, those skilled in the art willrecognize that the invention is not limited to the embodimentsdescribed. The present invention can be practiced with modification andalteration within the spirit and scope of the appended claims. Thedescription is thus to be regarded as illustrative instead ofrestrictive on the present invention.

1. A computer implemented method comprising: generating versioningcontrol information for a plurality of source/object files of a programproduct; and distributing a plurality of the versioning controlinformation to one or more user or non-user computer systems, wherein auser computer system stores the versioning control information for theuser computer system's own use, and a non-user computer systemcorrespondingly stores one or more copies of the versioning controlinformation for storage for a plurality of one or more user computersystems, with the storage of the versioning control information beingperformed on a user computer system by user computer system basis, onecopy of the versioning control information per user computer system,enabling each user computer system to use the corresponding copy of theversioning control information to selectively generate a version of theprogram product desired by the user computer system independent of otheruser computer systems.
 2. The method of claim 1, wherein the filescomprise source files, and each of the source files are is in either abase or a delta form, and the method further comprises generating andassigning an universally unique identifier (UUID) to identify each ofthe base/ or delta source files.
 3. The method of claim 1, wherein thefiles comprise source files, and said generating of versioning controlinformation for the plurality of source/object files comprisesgenerating predecessor UUID information for selected ones of the sourcefiles.
 4. The method of claim 1, wherein said distributing of versioningcontrol information for storage for a plurality of user computersystems, comprises distributing to a non-user computer system theversioning control information for corresponding storage of a pluralityof copies of the versioning control information in a plurality ofrepositories for a plurality of user computer systems, one copy perrepository for each per user computer system, each repository storingversioning control information of a plurality of program productsvendors for a the corresponding user computer system.
 5. The method ofclaim 1, wherein the method further comprises distributing source/objectto a non-user computer system the files for corresponding storage of oneor more copies of the files in a plurality of corresponding one or morelibraries for one or more user computer systems, one copy of the filesper library for each per user computer system, each library storingsource/object files for a plurality of program products vendors for athe corresponding user computer system.
 6. The method of claim 1,wherein said distributing of versioning control information furthercomprises distributing to a user or non-user computer system selectedones of (a) dependency information, including cross program productdependency information for some of the files, (b) locking informationfor selected ones of the source files to prevent the selected ones ofthe files from being updated, and (c) privilege or security informationfor some of the source files.
 7. The method of claim 1, wherein saidfiles comprise source files are written in a selected one of a text markup language and a natural language.
 8. An apparatus comprising: astorage medium; a processor; a code control/distribution system storedin said storage medium to be operated by the processor to generateversioning control information for a plurality of source/object files ofassociated with a program product, and to distribute a plurality of theversioning control information to one or more user or non-user computersystems for a user computer system to store a copy of the versioningcontrol information for the user computer system's own use, and for anon-user computer system to correspondingly store one or more copies ofthe versioning control information for storage for a plurality of one ormore user computer systems, with the corresponding storage of theversioning control information being performed on a user computer systemby user computer system basis, one copy of the versioning controlinformation per user computer system, to enable each of the usercomputer systems to be able to use the copy of the versioning controlinformation correspondingly stored for the user computer system toselectively generate a version of the program product desired by theuser computer system independent of other user computer systems.
 9. Theapparatus of claim 8, wherein said files comprise source files, and eachof the source files are is in either a base or a delta form, and thecode control/distribution system generates and assigns an universallyunique identifier (UUID) to identify each of the base/ or delta sourcefiles.
 10. The apparatus of claim 9, wherein said codecontrol/distribution system further generates predecessor UUIDinformation for each of the base/ or delta source files.
 11. Theapparatus of claim 8, wherein said code control/distribution systemdistributes the versioning control information for storage in aplurality of to a non-user computer system to correspondingly store oneor more copies of the versioning control information in one or morerepositories for one or more user computer systems, one copy perrepository for each per user computer system, each repository storingversioning control information of a plurality of program productsvendors for a the corresponding user computer system.
 12. The apparatusof claim 8, wherein the code control/distribution system furtherdistributes to a non-user computer system the source/object files forcorresponding storage in a plurality of corresponding of one or morecopies of the files in one or more libraries for one or more usercomputer systems, one copy per library for each per user computersystem, each library storing source/object files for a plurality ofprogram products vendors for a the corresponding user computer system.13. The apparatus of claim 8, wherein said code control/distributionsystem further distributes to a user or non-user computer systemselected ones of (a) dependency information, including cross programproduct dependency information of the files, (b) locking information forselected ones of the source files to prevent the selected ones of thefiles from being updated, and (c) privilege or security information forsome of the source files.
 14. The apparatus of claim 8, wherein saidfiles comprise source files are written in a selected one of a text markup language and a natural language.
 15. An article of manufacturecomprising: a recordable medium having recorded thereon a plurality ofprogramming instructions for use to program an apparatus to enable theapparatus to be able to generate versioning control information for aplurality of source/object files of a program product, and to be able todistribute a plurality of the versioning control information to one ormore user or non-user computer systems for a user computer system tostore a copy of the versioning control information for the user computersystem's own use, and for a non-user computer system to correspondinglystore one or more copies of the versioning control information forstorage for a plurality of for one or more user computer systems, withthe storage of the versioning control information being performed on auser computer system by user computer system basis, one copy of theversioning control information per user computer system, to enable eachof the user computer systems to be able to use the copy of theversioning control information correspondingly stored for the usercomputer system to selectively generate a version of the program productdesired by the user computer system independent of other user computersystems.
 16. The article of manufacture of claim 15, wherein each of thefiles comprise source files are in either a base or a delta form, andthe programming instructions enable the apparatus to be able to generateand assign an universally unique identifier (UUID) to identify each ofthe base/ or delta source files.
 17. The article of manufacture of claim16, wherein said programming instructions enable the apparatus to beable to generate predecessor UUID information for each of the base/ ordelta source files.
 18. The article of manufacture of claim 15, whereinthe programming instructions enable the apparatus to be able todistribute the versioning control information for storage to a non-usercomputer system to correspondingly store one or more copies of theversioning control information in a plurality of one or morerepositories for one or more user computer systems, one copy perrepository for each per user computer system, each repository storingversioning control information of source/object files of associated witha plurality of program products vendors for a the corresponding usercomputer system.
 19. The article of manufacture of claim 15, whereinsaid programming instructions enable the apparatus to be able todistribute to a non-user computer system the source/object files forstorage in a plurality of corresponding to correspondingly store one ormore copies of the files in one or more libraries for one or more usercomputer systems, one copy per library for each per user computersystem, each library storing source/object the files for a plurality ofprogram products vendors for the corresponding user computer system. 20.The article of manufacture of claim 15, wherein said programminginstructions further enable the apparatus to be able to distribute to anon-user computer system selected ones of (a) dependency information,including cross program product dependency information of some of thefiles, (b) locking information for selected ones of the source files toprevent the selected ones of the files from being updated, and (c)privilege or security information for some of the source files.
 21. Acomputer implemented method comprising: facilitating receipt and storageinto a common repository for a user computer system private copies afirst and a second own copy of versioning control information of theuser computer system of a first and a second plurality of source/objectfiles files associated with a first and a second program product of afirst and a second software vendor respectively; and facilitatingretrieval of selective versions of the first and second plurality ofsource/object files for the user computer system using said privatefirst and second own copies of versioning control information of theuser computer system stored in the common repository for the usercomputer system to selectively generate a first and a second version ofthe first and second program products desired by the user computersystem independent of other user computer systems.
 22. The method ofclaim 21, wherein each of the first and second plurality ofsaid filescomprise source files isin either a base or a delta source fileform,identified with an universally unique identifier (UUID), and saidfacilitating of receipt and storage into a common repository for theuser computer system versioning control information of the first andsecond plurality of source files, comprises facilitating receipt andstorage into the common repository for the user computer systempredecessor UUID information for the corresponding UUID of the first andsecond plurality of base/delta one or more source files.
 23. The methodof claim 21, wherein said facilitating of receipt and storage into acommon repository for the user computer system versioning controlinformation of the first and second plurality of source/object files,comprises facilitating receipt and storage storing into a commonrepository disposed on the user computer system said own copies of theversioning control information.
 24. The method of claim 21, wherein saidmethod further comprises of facilitating receipt and storage storing ofthe first and second plurality of source/object files of the first andsecond program products of the first and second software vendors,including first and second source files, each source file beingidentified with an universally unique identifier (UUID).
 25. The methodof claim 24, wherein said facilitating of receipt and storage of thefirst and second plurality of source/object files identified by UUIDcomprises facilitating receipt and storage storing into a common libraryfor the user computer system the first and second plurality ofsource/object files, including first and second source files, eachsource file being identified by an UUID.
 26. The method of claim 25,wherein said common library is disposed on the user computer system. 27.The method of claim 21, wherein said first and second plurality ofsource/object files are source/object files of a first and a secondsoftware program product of the first and the second software vendor,and said facilitating of retrieval ofthe method further comprises usingthe selective versions of the first and second plurality ofsource/object files is performedretrieved to facilitate selectivegeneration ofselectively generate the first and second versions of thefirst and/or the second software program products for the user computersystem independent of other computer systems.
 28. The method of claim27, wherein said facilitating of retrieval of selective versions of thefirst and second plurality of source/object files is performed tofacilitate and selective generation of the first and/or the secondsoftware versions of the program products for the user computer system,independent of other user computer systems, are performed in response toa request expressed in a timeline context by a user of the user computersystem.
 29. The method of claim 27, wherein said facilitating ofretrieval of selective versions of the first and second plurality ofsource/object files is performed to facilitate and selective generationof the first and/or the second software program products for the usercomputer system, independent of other user computer systems, areperformed to maintain software compatibility for on the user computersystem.
 30. The method of claim 29, wherein said facilitating of receiptand storage into a common repository for the user computer systemversioning control information of the first and second plurality ofsource/object files further comprises facilitating receipt and storageinto the common repository for the user computer system selected ones of(a) dependency information, including cross software product dependencyinformation, for the different versions some of the first and secondplurality of source/object files of the first and second softwareprogram products, (b) locking information for selected ones of the firstand second plurality of source files to prevent the selected ones filesfrom being updated, and (c) privilege or security information for someof the first and second plurality of source files.
 31. A user computersystem comprising: a processor; a storage medium; a multi-vendor codecontrol system (MVCCS) stored into the storage medium for operation bythe processor to facilitate receipt and storage into a common repositoryfor the user computer system, private first and second own copies ofversioning control information of the user computer system of a firstand a second plurality of source/object files files of a first and asecond program product of a first and a second software vendorrespectively, and to facilitate retrieval of selective versions of thefirst and second plurality of source/object files for the user computersystem, using said private own copies of the versioning controlinformation of the user computer system stored in the common repositoryfor the user computer system, to selectively generate desired versionsof the first and second program products for the user computer systemindependent of other user computer systems.
 32. The user computer systemof claim 31, wherein each of the first and second plurality of filescomprise source files isin either a base or a delta source fileform,identified with an universally unique identifier (UUID), and said MVCCSfacilitates receipt and storage into the common repository for the usercomputer system predecessor UUID information for the corresponding UUIDof the first and second plurality of base/delta each source files . 33.The user computer system of claim 31, wherein said user computer systemfurther includes said common repository for the user computer system.34. The user computer system of claim 31, wherein said MVCCS furtherfacilitates receipt and storage of the first and second plurality ofsource/object files of the first and second program products of thefirst and second software vendors, each being identified with anuniversally unique identifier (UUID).
 35. The user computer system ofclaim 34, wherein said MVCCS further facilitates receipt from the firstand the second distributor, and storage of the first and secondplurality of object files or a combination of source and source/ objectfiles identified by UUID into a common library for the user computersystem.
 36. The user computer system of claim 35, wherein said usercomputer system further includes said common library.
 37. The usercomputer system of claim 31, wherein said first and second plurality ofsource/object files are source files of a first and a second softwareprogram product of the first and the second software vendor, and saidMVCCS is adapted to performs said facilitating of retrieval of selectiveversions of the first and second plurality of source/object files tofacilitate selective generation of the desired versions of the firstand/or the second software program products for the user computersystem.
 38. The user computer system of claim 37, wherein said usercomputer system further comprises input/output devices to facilitate auser of the user computer system to submit a request in a timelinecontext to cause said MVCCS to facilitate said retrieval of selectiveversions of the first and second plurality of source/object files tofacilitate selective generation of the desired versions of the firstand/or the second software program products for the user computersystem.
 39. The user computer system of claim 37, wherein said MVCCS isadapted to facilitates said retrieval of selective versions of the firstand second plurality of source/object files to facilitate selectivegeneration of the first and/or the second software program products forthe user computer system to maintain software compatibility for the usercomputer system.
 40. The user computer system of claim 37, wherein saidMVSCS is further adapted to facilitates receipt and storage into thecommon repository for the user computer system selected ones of (a)dependency information, including cross software product dependencyinformation, for the different versions of the first and secondplurality of source/object files of the first and second softwareprogram products, (b) locking information for selected ones of the firstand second plurality of source files to prevent the selected ones filesfrom being updated, and (c) privilege or security information for thefirst and second plurality of source files.
 41. An article ofmanufacture comprising: a recordable medium having recorded thereon aplurality of programming instructions for use to program an apparatus toenable the apparatus to be able to facilitate receiving and storing intoa common repository for a user computer system, private first and secondown copies of versioning control information of the user computer systemof a first and a second plurality of source/object files files of afirst and a second program product of a first and a second softwarevendor respectively, and to be able to facilitate retrieval of selectiveversions of the first and second plurality of source/object files forthe user computer system using said private first and second own copiesof versioning control information of the user computer system stored inthe common repository for the user computer system, to selectivelygenerate first and second desired versions of the first and secondprogram products independent of other user computer systems.
 42. Thearticle of manufacture of claim 41, wherein each of the first and secondplurality of files comprise source files is in either a base or a deltasource file form, identified with an universally unique identifier(UUID), and said programming instructions enable the apparatus to beable to facilitate receipt and storage into the common repository forthe user computer system, predecessor UUID information for the UUIDs ofthe first and second plurality of base/delta source files.
 43. Thearticle of manufacture of claim 41, wherein said programminginstructions further enable the apparatus to be able to facilitatereceipt and storage into a common source library for the user computersystem, the first and second plurality of source/object files of thefirst and second program products of the first and second softwarevendors, each being identified with an universally unique identifier(UUID).
 44. The article of manufacture of claim 41, wherein said firstand second plurality of source/object files are source/object files of afirst and a second software program product of the first and the secondsoftware vendor, and said facilitating of retrieval of selectiveversions of the first and second plurality of source/object files is areperformed to facilitate selective generation of the first and/or thesecond software program product for the user computer system,independent of other user computer systems.
 45. The article ofmanufacture of claim 44, wherein said programming instructions enablethe apparatus to be able to facilitate retrieval of selective versionsof the first and second plurality of source/object files for selectivegeneration of different versions of the first and/or the second softwareprogram products for the user computer system, in response to a requestexpressed in a timeline context by a user of the user computer system.46. The article of manufacture of claim 44, wherein said programminginstructions enable the apparatus to facilitate retrieval of selectiveversions of the first and second plurality of source/object files forselective generation of different versions of the first and/or thesecond software program products for the user computer system tomaintain software compatibility for the user computer system.
 47. Thearticle of manufacture of claim 41, wherein said programminginstructions further enable the apparatus to facilitate receipt andstorage into the common repository for the user computer system selectedones of (a) dependency information, including cross software productdependency information, for the different versions of some of the firstand second plurality of source/object files of the first and secondsoftware program products, (b) locking information for selected ones ofthe first and second plurality of source files to prevent the selectedones files from being updated, and (c) privilege or security informationfor some of the first and second plurality of source files.
 48. A methodcomprising: receiving first versioning control information for aplurality of files associated with a first software product; andcorrespondingly storing a plurality of copies of the first versioningcontrol information in a first storage medium for a plurality of usercomputer systems, wherein a respective copy of the first versioningcontrol information is stored for each user computer system using aone-to-one correspondence to enable each of the user computer systems tobe able to use the copy of the first versioning control informationcorrespondingly stored for the user computer system to selectivelygenerate a version of the first software product desired by the usercomputer system independent of other user computer systems.
 49. Themethod of claim 48, further comprising: receiving second versioningcontrol information for a plurality of files associated with a secondsoftware product; and correspondingly storing a plurality of copies ofthe second versioning control information in a second storage medium,for a plurality of user computer systems, wherein a respective copy ofthe second versioning control information is stored for each usercomputer system using a one-to-one correspondence to enable each of theuser computer systems to be able to use the copy of the secondversioning control information correspondingly stored for the usercomputer system to selectively generate a version of the second softwareproduct desired by the user computer system independent of other usercomputer systems.
 50. The method of claim 49, wherein the first andsecond storage media are one of the same storage medium.
 51. Anapparatus comprising: a processor; and a multi-vendor control system(MVCS) configured to be operated by the processor to receive firstversioning control information for a plurality of files associated witha first software product; and correspondingly store a plurality ofcopies of the first versioning control information in a first storagemedium for a plurality of user computer systems, wherein a respectivecopy of the first versioning control information is stored for each usercomputer system using a one-to-one correspondence to enable each of theuser computer systems to be able to use the copy of the first versioningcontrol information correspondingly stored for the user computer systemto selectively generate a version of the first software product desiredby the user computer system independent of other user computer systems.52. The apparatus of claim 51, wherein the MVCS is further configured tobe operated by the processor to receive second versioning controlinformation for a plurality of files associated with a second softwareproduct; and correspondingly store a plurality of copies of the secondversioning control information in a second storage medium for aplurality of user computer systems, wherein a respective copy of thesecond versioning control information is stored for each user computersystem using a one-to-one correspondence to enable each of the usercomputer systems to be able to use the copy of the second versioningcontrol information correspondingly stored for the user computer systemto selectively generate a version of the second software product desiredby the user computer system independent of other user computer systems.53. The apparatus of claim 51, wherein the first and second storagemedia are one of the same storage medium.
 54. A method of operation tobe performed by a user computer system, comprising: accessing a libraryassociated with the user computer system on a one-to-one basis toretrieve first and second versioning control information of a first andsecond plurality of files of a first and a second software product of afirst and second vendor, respectively; and generating a first and asecond version of the first and second software products, using theretrieved first and second versioning control information of the firstand second plurality of files and the first and second softwareproducts, respectively, independent of other user computer systems. 55.The method of claim 54, further comprising receiving and storing intothe library, the first and second copies of the first and secondversioning control information of the first and second plurality offiles of the first and second software products of the first and secondvendors.
 56. The method of claim 54, wherein the first and secondvendors are one of the same vendor.
 57. A user computer systemcomprising: a processor; and a multi-vendor control system (MVCS)configured to be operated by the processor to access a libraryassociated with the user computer system on a one-to-one basis, toretrieve from a first and a second own copy of first and secondversioning control information of first and second plurality of files ofa first and a second software product of a first and a second vendor,respectively, and generate a first and a second version of the first andsecond software product, using the retrieved first and second versioningcontrol information of the first and second plurality of files of thefirst and second software products, respectively, independent of otheruser computer systems.
 58. The user computer system of claim 57, whereinthe MVCS is further configured to receive and store into the library,the first and second copies of the first and second versioning controlinformation of the first and second plurality of files of the first andsecond software products of the first and second vendors.
 59. The usercomputer system of claim 57, further comprising a storage devicecommunicatively coupled to the processor in which said library isstored.
 60. The user computer system of claim 57, wherein the first andsecond vendors are one of the same vendor.
 61. The method of claim 1,wherein the versioning control information includes dependencyinformation between files.
 62. The method of claim 61, wherein thedependency information includes cross program product dependencyinformation.
 63. The apparatus of claim 8, wherein the versioningcontrol information includes dependency information between files. 64.The apparatus of claim 63, wherein the dependency information includescross program product dependency information.